#ifndef __GRAPHICS_IVERTEXBUFFER_HPP__
#define __GRAPHICS_IVERTEXBUFFER_HPP__

#include <RevEng/RevEng.hpp>

#define GR_VERTEX_BUFFER 0x00000002

namespace Graphics
{
	struct Vertex
	{
		RevEng::Math::Vector3s Coord;
		RevEng::Math::Vector3s Normal;
		RevEng::Math::Vector2s TexCoord;
	};

	//Buffer de vertices
	//Contiene datos de vertices
	class IVertexBuffer : public RevEng::IObject
	{
	public:
		virtual ~IVertexBuffer() = 0;

		virtual void* Lock() = 0;
		virtual void Unlock() = 0;

		virtual RevEng::UInt32 GetVertexCount() const = 0;
		virtual void SetVertexCount(RevEng::UInt32 Count) = 0;

		virtual RevEng::Enum  GetClassId() const;

	public:
	};


	inline IVertexBuffer::~IVertexBuffer()
	{
	}


	inline RevEng::Enum IVertexBuffer::GetClassId() const
	{
		return GR_VERTEX_BUFFER;
	}
}

#endif	//__GRAPHICS_IVERTEXBUFFER_HPP__
